/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.Controladores;

import com.clinicariobamba.ReglasNegocio.Clases.SignosVitales;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesFrecuenciaCardiaca;
import com.clinicariobamba.ReglasNegocio.Funciones.FuncionesSignosVitales;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Serializable;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.LineChartSeries;

/**
 *
 * @author xavier
 */
//CAMBIAR A SessionScope al final
@ManagedBean
@ViewScoped
public class ControladorSignosVitales implements Serializable {

    private CartesianChartModel linearModel;
    // private final UtilArduino arduino;
    private int t;
    
    private int id_SigVit;
    private int pr;
    private int sp;
    
    private int id_paciente;

    private boolean flag;

//    private double time;
//    private double timeAux;
//    private double hcgAux;

    public ControladorSignosVitales() {
        id_SigVit = 0;

        //time = 0;
        flag = false;
        id_paciente = 0;
        t = 5000;
        createLinearModel();

    }

    public int getPr() {
        return pr;
    }

    public int getSp() {
        return sp;
    }
    

    public void setId_paciente(int id_paciente) {
        this.id_paciente = id_paciente;
    }

    public int getT() {
        return t;
    }

    public void setT(int t) {
        this.t = t;
    }

    public CartesianChartModel getLinearModel() {
        //cargar del archivo

        //  linearModel.getSeries().get(0).set(t, arduino.getHcg());
        //linearModel.getSeries().get(0).set(0, 0);
//        linearModel.getSeries().get(0).set(15, 3);
//        linearModel.getSeries().get(0).set(80, 4);
//        linearModel.getSeries().get(0).set(200, 2);
        //this.i = this.i + 250;        
        t = t + 167;

        return linearModel;
    }

    private void createLinearModel() {
        linearModel = new CartesianChartModel();
        LineChartSeries series1 = new LineChartSeries();
        linearModel.addSeries(series1);
        linearModel.getSeries().get(0).set(0, 0);

//        try {
//            BufferedReader input = new BufferedReader(new FileReader("C:\\Users\\xavier\\Desktop\\electroSofi.txt"));
//            String line = null;
//            int i = 0;
//            while ((line = input.readLine()) != null) {
//                String[] datos = line.split(";");
//                if (datos.length == 2) {
//                    //69000
//                    if (Double.parseDouble(datos[0]) <= 69000) {
//                        linearModel.getSeries().get(0).set(Double.parseDouble(datos[0]), Double.parseDouble(datos[1]));
//                        if (Double.parseDouble(datos[1]) > 2.5) {
//                            if (time == 0) {
//                                time = Double.parseDouble(datos[0]);
//                                timeAux = time;
//                            } else {
//                                time = Double.parseDouble(datos[0]) - time;
//                                //calcular FC aqui                                            
//                                time = time / 200d;
//                                if (Math.round(time) != 0) {
//                                    fc = (int) (300 / Math.round(time));
//                                    time = 0;
//                                } else {
//                                    if (time > timeAux) {
//                                        time = Double.parseDouble(datos[0]);
//                                    } else {
//                                        time = timeAux;
//                                    }
//                                }
//                                //System.out.println(fc);
//                            }
//                        }
//                    }
//                }
//            }
//            input.close();
//        } catch (Exception ex) {
//            System.err.println(ex.getMessage());
//
//        }
    }

    public ArrayList<SignosVitales> obtenerSV(int id_sv, int id_paciente) {
        return FuncionesSignosVitales.obtenerSignosVitales(id_sv, id_paciente);
    }

    public void onCloseDialog() {
        id_SigVit = 0;
        id_paciente = 0;

        //time = 0;
        t = 5000;
        flag = false;
        createLinearModel();
        //linearModel.getSeries().get(0).getData().clear();

    }

    public CartesianChartModel leerDatos() {
        if (id_paciente != 0) {
            if(id_SigVit==0)
            {
                id_SigVit=FuncionesSignosVitales.obtenerUltimoIdSV(id_paciente)-100;
            }
            ArrayList<SignosVitales> listSV = FuncionesSignosVitales.obtenerSignosVitales(id_SigVit, id_paciente);
            
            //listSV.size()
            if (listSV.size() > 0) {
                for (int j = 0; j < listSV.size(); j++) {
                    id_SigVit = listSV.get(j).getIdSv();
                    if (t == 5000) {
                        t = (int) (listSV.get(j).getTiempo() - 1 + 5000);
                    }
                    linearModel.getSeries().get(0).set(listSV.get(j).getTiempo(), listSV.get(j).getHcg());
                    pr=listSV.get(j).getPr();
                    sp=listSV.get(j).getPs();
//                    if (listSV.get(j).getHcg() > 2.5) {
//                        if (time == 0) {
//                            time = listSV.get(j).getTiempo();
//                            hcgAux = listSV.get(j).getHcg();
//                            timeAux = time;
//                        } else {
//                            time = listSV.get(j).getTiempo() - time;
//                            //calcular FC aqui                                            
//                            time = time / 200d;
//                            if (Math.round(time) != 0) {
//                                fc = (int) (300 / Math.round(time));
//                                time = 0;
//                            } else {
//                                if (listSV.get(j).getHcg() > hcgAux) {
//                                    time = listSV.get(j).getTiempo();
//                                } else {
//                                    time = timeAux;
//                                }
//                            }
//                        }
//                    }
                }
                flag = true;
            }
            if (flag) {
                t = t + 85;
            }
        }
        return linearModel;
    }

}
